
#ifndef __VIRTUAL_SERVICE_MANAGER_H__
#define __VIRTUAL_SERVICE_MANAGER_H__

#include "../../utils/services/svcreg.h"
#include "../../include/lpcds_services.h"
#include <mutex>
#include <map>

typedef struct __VIRTUAL_SERVCE_INFO {
    std::mutex Locked;
    int RefCount;
    wchar_t ServiceName[MAX_SERVICE_NAME_LENGHT];
    SERVICE_BASE_CONFIG Config;
    SERVICE_STATUS Status;
    unsigned int   ProcessId;
    unsigned int   ServiceFlags;
}VIRTUAL_SERVCE_INFO, * PVIRTUAL_SERVCE_INFO;

class CServiceManager
{
public:
    CServiceManager();
    ~CServiceManager();



private:
    std::mutex Locked;
    int RefCount;
    wchar_t ServiceName[MAX_SERVICE_NAME_LENGHT];
    SERVICE_BASE_CONFIG Config;
    SERVICE_STATUS Status;
    unsigned int   ProcessId;
    unsigned int   ServiceFlags;
};

#endif